﻿
define(function(require, exports, module) {
	
	var $ = require('../libs/jqueryui/jqueryui');
	
	
	exports.init = function(config){
	
		var cfg = config || {},
			mods = [];
		
		switch(cfg.page){
			case "addproduct" : 
				mods = [openSelectPanel,openAddPanel,delProduct];
				break;
			case "selectform" :
				mods = [selectform];
				break;	
			case "addproductform" :
				mods = [addproductform];
				break;
			case "tmanage" :
				mods = [tmanage]
				break;
			case "divide" :
				mods = [divide]
				break;
			case "tgdetail" :
				mods = [tgdetail]
				break;
			case "fldetail" :
				mods = [fldetail]
				break;
			case "promote" :
				mods = [promote]
				break;
		}
		
		$.each(mods,function(){
			this.call();
		})
		
		
		
		$('input.J_date').datetimepicker({
			clearText: '清除',
	        clearStatus: '清除已选日期',
	        closeText: '确定',
	        closeStatus: '不改变当前选择',
	        prevText: '&#x3c;上月',
	        prevStatus: '显示上月',
	        prevBigText: '<<',
	        prevBigStatus: '显示上一年',
	        nextText: '下月&#x3e;',
	        nextStatus: '显示下月',
	        nextBigText: '>>',
	        nextBigStatus: '显示下一年',
	        currentText: '现在',
	        currentStatus: '显示本月',
	        monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
	        monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'],
	        monthStatus: '选择月份',
	        yearStatus: '选择年份',
	        weekHeader: '周',
	        weekStatus: '年内周次',
	        dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
	        dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
	        dayNamesMin: ['日','一','二','三','四','五','六'],
	        dayStatus: '设置 DD 为一周起始',
	        dateStatus: '选择 m月 d日, DD',
	        firstDay: 1,
	        initStatus: '请选择日期',
	        isRTL: false,
			showSecond: true, //显示秒
			timeOnlyTitle: 'Choose Time',
			timeText: '时间：',
			hourText: '时：',
			minuteText: '分：',
			secondText: '秒：',
			dateFormat: 'yy-mm-dd',
			timeFormat: 'hh:mm:ss',//时间格式
			stepHour: 1,//设置步长
			stepMinute: 1,
			stepSecond: 1
		});
		
	}
	
	//mods--------------------------------------
	/**
	 * 打开增加商品的dialog
	 */
	function openAddPanel(){
		urlframe('团购详情')
		$( ".dialog-form" ).click(function() {
			$("#tframe").data('url',$(this).attr("href"));
			$( "#tframe" ).dialog("open");
			return false;
		});
	}
	
	/**
	 * 打开推广预览dialog
	 */
	function openSelectPanel(){
		selectframe('推广预览')
		$( ".select-form" ).click(function() {
			$("#selectframe").data('url',$(this).attr("href"));
			$( "#selectframe" ).dialog("open");
			return false;
		});
	}
	
	/**
	 * 删除商品
	 */
	function delProduct(){
		operate("#tuanlist .del");
	}
	
	function selectform(){
		(function(){
			//
			$(".J_ok").click(function(){
				var style750 = $(".current").attr("id");
				$("#style750").attr("value",style750);
				$("#selectStyleForm").submit();
			});
		})();
	}
	
	function addproductform(){
		//删除事件
		(function(){
			var tbl = $("#levelsetting"),
				updatelevel = function(){
					tbl.find("tbody.form tr").each(function(index){
						//团购等级
						$(this).find("input.J_level").val(index+1);
						//更新name
						$(this).find("input:text").each(function(){
							var name = $(this).attr("name");
							$(this).attr("name",name.replace(/\[([-]?\d)\]/,"["+(index)+"]"));
						});
						$(this).find("input:hidden").each(function(){
							var name = $(this).attr("name");
							$(this).attr("name",name.replace(/\[([-]?\d)\]/,"["+(index)+"]"));
						});
					});
				},
				del = function(el){
					$(el).parent().parent().remove();
					updatelevel();
					return false;
				},
				//当前商品的价格
				thisprice = tonumber($("#thisprice").val()),
				//自动更新价格
				count = function(tg){
					var ins = $(tg).parent().parent().find("input:text");
					
					//填折扣
					if(tg==ins[2]){
						var r = tonumber($(tg).val());
						if(r < 0.1 || r > 9.9){
							alert("折扣范围必须在0.1~9.9之间!");
						}else{
							$(ins[3]).val(Math.round(thisprice*r/10*100)/100);
							$(ins[4]).val(Math.round(thisprice*(10-r)/10*100)/100);
						}	
					}
					
					//填团购价
					if(tg==ins[3]){
						if (isNaN($(tg).val()))
						{
							alert("团购价格必须为数字!");
							return;
						}
						var r = tonumber($(tg).val());
						if(r>thisprice){
							alert("团购价格不能高于宝贝原始价格!");
						}
						else{
						$(ins[2]).val(Math.round(r/thisprice*10*100)/100);
						$(ins[4]).val(Math.round((thisprice-r)*100)/100);
						}
						
					}
					
					//填节省
					if(tg==ins[4]){
						var r = tonumber($(tg).val());
						if(r < 0)
						{
							alert("节省价格不能为负数!");
						}
						if(r>thisprice){
							alert("节省价格不能高于宝贝原始价格!");
						}else{
							$(ins[2]).val(Math.round((10*(thisprice-r)/thisprice)*100)/100);
							$(ins[3]).val(Math.round((thisprice-r)*100)/100);
						}
						
					}
				};
			
			
			//绑定文本框事件
			tbl.find("input:text").bind("blur",function(ev){
				count(ev.target);
			});
				
		
			tbl.find(".del").click(function(ev){
				del($(this));
			});
		
			
			tbl.find(".J_add").click(function(){
				if(tbl.find("tbody.form tr").length>=5){
					alert("团购等级最高只支持5级");
					return false;
				}
				
				var tpl = $($("#trtpl").val());
				tpl.find(".del").click(function(ev){
					del($(this));
				});
				tbl.find("tbody.form").append(tpl);
				
				//绑定文本框事件
				tpl.find("input:text").bind("blur",function(ev){
					count(ev.target);
				});
				updatelevel();
			});
			
			//取消按钮
			$(".J_cancel").click(function(){
				closeUrlFrame();
			});
			
			//确定之前校验数据
			$(".J_ok").click(function(){
				var max = 5,
					p = [],
					z = [],
					t = [];
				var title = $("#groupTitle").val();
				var sDate = $("#sDate").val();
				var eDate = $("#eDate").val();
				var maxBuyerNum = parseFloat($("#maxBuyerNum").val());
				var offLineBuyerNum = parseFloat($("#offLineBuyerNum").val());
				var oringinalVolum = parseFloat($("#oringinalNum").val());
				var deListTime = $("#deListTime").val();
				
				if (AS.isBlank(title))
				{
					alert('请填写团购标题!');
					return false;
				}
				if (AS.byteLength(title) > 70)
				{
					alert('团购标题不可超过35个中文字符!');
					return false;
				}
				
				if (AS.isBlank(sDate))
				{
					alert('请填写团购开始时间!');
					return false;
				}
				
				if (AS.isBlank(eDate))
				{
					alert('请填写团购结束时间!');
					return false;
				}
				
				var res = AS.compareDate(sDate, eDate, false);
				var res2 = AS.compareDate(eDate, deListTime, false);
				if (res2 == -1)
				{
					return ture;
				}
					
				if (res == 2)
				{
					alert('团购开始时间不能小于当前时间!');
					return false;
				}
				else if (res == 3)
				{
					alert('输入的日期格式不正确!');
					return false;
				}
				else if (res == -1)
				{
					alert('团购开始时间不能大于结束时间!');
					return false;
				}
				else if (res == 0)
				{
					alert('团购开始时间不能等于结束时间!');
					return false;
				}
				
				if (!AS.pattern.isInt(maxBuyerNum))
				{
					alert("最大团购数必须为正整数");
					return false;
				}
				
				if (maxBuyerNum > oringinalVolum)
				{
					alert('最大团购数不可超过原始库存数!');
					return false;
				}
				
				if (!AS.pattern.isInt(offLineBuyerNum))
				{
					alert("线下团购数必须为整数");
					return false;
				}
				
				if (offLineBuyerNum > maxBuyerNum)
				{
					alert('线下交易数不可大于最大团购数!');
					return false;
				}
				
				tbl.find("tbody.form tr").each(function(index){
					var tri = $(this).find("input:text");
					p.push(parseFloat($(tri[1]).val()));
					z.push(parseFloat($(tri[2]).val()));
					t.push(parseFloat($(tri[3]).val()));
				});
				
				if (t.length != 1)
				{
					//比较人数
					for(var i=0; i<p.length; i++){
						if (!AS.pattern.isInt(p[i]))
						{
							alert("团购数必须为整数!");
							return false;
						}
						if(i!=p.length-1 && p[i]>=p[i+1]){
							alert("高等级团购数必须高于低等级的团购数!");
							return false;
						}
						if(p[i]>maxBuyerNum){
							alert("团购数不可大于最大团购数!");
							return false;
						}	
					}
					
					//比较折扣
					for(var i=0; i<z.length; i++){
						if (parseFloat(z[i]) > 9.9 || parseFloat(z[i]) < 0.1)
						{
							alert("折扣范围必须在0.1~9.9之间!");
							return false;
						}
						if (!AS.pattern.isNum(z[i]))
						{
							alert("团购折扣必须为数字!");
							return false;
						}
						if(i!=z.length-1 && z[i]<=z[i+1]){
							alert("高等级团购折扣必须高于低等级的团购折扣!");
							return false;
						}
					}
					
					//比较价格
					for(var i=0; i<t.length; i++){
						if (!AS.pattern.isNum(t[i]))
						{
							alert("团购价格必须为数字!");
							return false;
						}
						if(i!=t.length-1 && t[i]<=t[i+1]){
							alert("高等级团购价格必须低于低等级的团购价格!");
							return false;
						}
					}
				}
				else
				{
					if (!AS.pattern.isInt(p[0]))
					{
						alert("团购数必须为正整数!");
						return false;
					}
					if(p[0]>maxBuyerNum){
						alert("团购数不可大于最大团购数!");
						return false;
					}	
					if (!AS.pattern.isNum(t[0]))
					{
						alert("团购价格必须为数字!");
						return false;
					}
					if (!AS.pattern.isNum(z[0]))
					{
						alert("团购折扣必须为数字!");
						return false;
					}

					if (z[0] > 9.9 || z[0] < 0.1)
					{
						alert("折扣范围必须为0.1~9.9之间!");
						return false;
					}
				}
			});
		})();
	}
	
	
	/**
	 * 团购管理
	 */
	function tmanage(){
		
		//当前操作
		(function(){
			operate("#tuanlist .operate");
		})();
		
		
		//详情
		(function(){
			urlframe('团购详情')
			$( ".dialog-detail" ).click(function() {
				$("#tframe").data('url',$(this).attr("href"));
				$( "#tframe" ).dialog("open");
				return false;
			});
		})();
		
		
	}

	
	
	
	/**
	 * 分成管理
	 */
	function divide(){
		//当前操作
		(function(){
			operate("#tuanlist .operate");
		})();
		
		
		//详情
		(function(){
			urlframe('详情')
			$( ".dialog-detail" ).click(function() {
				$("#tframe").data('url',$(this).attr("href"));
				$( "#tframe" ).attr("title",$(this).attr("frameTitle"));
				$( "#tframe" ).dialog("open");
				return false;
			});
		})();

	}
	
	

	/**
	 * 时间
	 */
	function tgdetail(){
		
		//$( "input.J_date" ).datepicker({
		//	showButtonPanel: true,
		//	dateFormat: 'd MM, y'
		//})
		
//		$('input.J_date').datetimepicker({
//			showSecond: true, //显示秒
//			dateFormat: 'yy-mm-dd',
//			timeFormat: 'hh:mm:ss',//时间格式
//			stepHour: 1,//设置步长
//			stepMinute: 1,
//			stepSecond: 1
//		});
		

	}
	
	
	
	
	/**
	 * 返利
	 */
	function fldetail(){
		
		var act = $("#doaction"),
			url = act.attr("data-url"),
			getids = function(){
				var arr = [];
				act.find("input[name=id]:checked").each(function(){
					arr.push($(this).val());
				});
				return arr.join(",");
			};
			getGroupDetailId = function()
			{
				return $("#groupDetailId").val();
			}
			getCurrentRebateStatus = function()
			{
				return $("#rebateStatus").val();
			}
		
		//全选
		$("#selectall").click(function(){
			act.find("input[name=id]").attr("checked",$(this).attr("checked"));
		});
		act.find("button[value]").click(function(ev){
			var ids = getids();
			if (ids.length == 0)
			{
				alert("请您先选择订单!");
				return;
			}
			if (!confirm("确定这么操作吗?"))
			{
				return;
			}
			$.ajax({
				type: "POST",
				url: url,
				data: "status="+$(ev.target).val()+"&ids="+ids+"&groupDetailId="+getGroupDetailId()+"&currentRebateStatus="+getCurrentRebateStatus(),
				dataType: "json",
				beforeSend: function(){
					Mask.show(act);
				},
				complete: function(){
					Mask.hide();
				},
				success: function(data,status,setting){
					ajaxcallback(data);
				},
				error: function(xhr, settings, exception){
					alert(exception);
				}
			});
			
			
		});
				
	}

	
	//utils----------------------------------------------------
	
	function reload(){
		window.location.reload();
	}
	

	function urlframe(title){
		var dialog = $('<div id="tframe" title="'+title+'"></div>').dialog({
			width:850,
			height:570,
			resizable:false,
			autoOpen: false,
			modal: true,
			show: "fade",
			hide: "fade",
			open: function(event, ui){
				$(this).html('<iframe src="'+$(this).data('url')+'" frameborder="no" scrolling="auto" width="100%" height="100%"></iframe>');
			}
		});
		
		window.closeUrlFrame = function(){
			$(dialog).dialog("close");
			reload();
		}
	}
	
	function selectframe(title){
		var dialog = $('<div id="selectframe" title="'+title+'"></div>').dialog({
			width:620,
			height:540,
			resizable:false,
			autoOpen: false,
			modal: true,
			show: "fade",
			hide: "fade",
			/*buttons: {
				"确定": function() {
					reload()
					$( this ).dialog( "close" );
				},
				"取消": function() {
					$( this ).dialog( "close" );
				}
			},*/
			open: function(event, ui){
				$(this).html('<iframe src="'+$(this).data('url')+'" frameborder="no" scrolling="auto" width="100%" height="100%"></iframe>');
			}
		});
		
		window.closeSelectFrame = function(){
			$(dialog).dialog("close");
		}
	}
	
	function closeUrlFrame(){
		if(parent && parent.closeUrlFrame){
			parent.closeUrlFrame();
		}
	}
	
	function closeSelectFrame(){
		if(parent && parent.closeSelectFrame){
			parent.closeSelectFrame();
		}
	}

	
	function operate(els){
		els = $(els);
		$('<img src="http://img03.taobaocdn.com/tps/i3/T1Oel6XdhbXXXXXXXX-16-16.gif" style="display:none;"  align="absmiddle" alt="loading" />').insertBefore(els);
		
		els.click(function(ev){
			var tg = $(this);
			
			if(tg.attr("data-confirm")){
				if(!confirm(tg.attr("data-confirm"))){
					return false;
				}
			}
			
			
			
			tg.hide().prev().show();
			setTimeout(function(){
			$.ajax({
				type: 'POST',
				url: tg.attr("href"),
				success: function(data){
					tg.show().prev().hide();
					ajaxcallback(data);
				},
				error: function(xhr, settings, exception){
					alert("发生异常：\n\n"+exception);
				},
				dataType: 'json'
			});
			},1000);
			return false;
		});
	}
	
	
	
	function tonumber(val){
		
		val = parseFloat(val);
		
		if(isNaN(val)){
			return 0;
		}else{
			return val;
		}
		
	}
	
	
	
	function ajaxcallback(data){
		if(data){
			if(data.state==1){
				alert("操作成功");
			}else{
				if(data.message){
					alert(data.message);
				}else{
					alert("操作失败");
				}
			}
		}else{
			alert("数据格式错误");
		}
		var groupStatus = data.data.groupStatus;
		var ids = data.data.ids;
		var groupDetailId = data.data.groupDetailId;
		var currentRebateStatus = data.data.rebateStatus;
		var rebateGroupStatus = data.data.rebateGroupStatus;
		if (groupStatus != null && typeof(groupStatus)!='undefined' && groupStatus != -1)
		{
			window.location.href="/groupSearch.do?action=doSearchGroupDetail&groupStatus= " + groupStatus;
		}
		else if (ids != null && typeof(ids)!='undefined' && ids.length != 0)
		{
			window.location.href="/rebateExport.do?action=exportRebate&ids=" + ids+"&groupDetailId=" + groupDetailId;
		}
		else if (currentRebateStatus != null && typeof(currentRebateStatus)!='undefined' && currentRebateStatus.length != 0)
		{
			window.location.href="/rebateSearch.do?action=doSearchRebateDetail&groupDetailId="+ groupDetailId +"&rebateStatus="+currentRebateStatus+"&groupStatus="+rebateGroupStatus;
		}
		else
		{
			window.location.href= window.location.href;
		}
	}
	
	
	var Mask = new function(){
		var mask = $('<div class="loading" style="position:absolute;display:none;"><div class="mask"></div><i class="icon">loading...</i></div>');
		$(document).ready(function() {
			$(document.body).append(mask);
		});
		this.show = function(target){
			var box = $(target)
				offset = box.offset();
			mask.css({
				width: box.outerWidth(),
				height: box.outerHeight(),
				top: offset.top,
				left: offset.left
			});
			mask.fadeIn();
		};
		this.hide = function(){
			mask.fadeOut();
		};
	}
});

var AS={};
/**
 * 判断传入的字符串是否为空,已包含全角
 */
AS.isBlank = function(str){
	var temp = AS.trimSBCcase(AS.trim(str));
	if(temp.length == 0){
		return true;
	}
	return false;
};
/**
 * 将传入的字符串两边的空格清除
 */
AS.trim = function(str){
	str = (str||"").replace(/^\s\s*/, '');
	var ws = /\s/,
	i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
};
/**
 * 获取某个字符串的字节长度(如,"中a" 将返回长度 2 )
 */
AS.byteLength = function(str){
	 return (str||"").replace(/[^\x00-\xff]/g,"**").length;  
};

/**
 * 将某个字符串两边的全角空格过滤掉
 */
AS.trimSBCcase = function(str){
	return (str||"").replace(/(^[\s\u3000]*)|([\s\u3000]*$)/g, "");
};

/**
 * 对传入的字符串进行截取,只适用于GBK编码,如最后一个字符为汉字，正好超出长度，则舍去该汉字 
 * 最后显示结果为xxxxxx...
 */
AS.adjustStr = function(str,n){
	if(AS.byteLength(str)<n){
		return str;
	}
	var destination = [];
	var currentLength = 0;
	for(var i=0,j=(str||"").length;i<j;i++){
		var temp = str.charAt(i);
		currentLength+=AS.byteLength(temp) ;
		if(currentLength <= n){
			destination[i]=temp
		}
	}
	destination.push('...');
	return destination.join('');
};

/**
*获得字符串长度，中文算两个字符
*/
AS.length = function(str){
	var len=0;
    for(var i=0;i<str.length;i++){
		if(str.charAt(i)=='\n'){
			len+=2;
		}else if(!this.isChineses(str.charAt(i))){
			len+=1;
		}else{
			len+=2;
		}
    }
	return len;
};
	
/**
* 判断是否是中文
*/
AS.isChineses = function(str){
	var ret=true;
    for(var i=0;i<str.length;i++){
		ret=ret && (str.charCodeAt(i)>=256);
    }
	return ret;
};

/**
 * 对传入的字符串进行长度校验 
 */
AS.isInRange = function(str,minLen,maxLen){
	var bChk=true;
	if(maxLen!=0 || minLen!=0)	
	{
		str = this.trim(str);
		var len=this.length(str);
		if(len>maxLen || len<minLen)
		bChk=false;
	}
	return bChk;
};

AS.compareDate = function(sDate,eDate,compareCurrenFlag)
{
	var strdt1 = sDate.replace(/-/g,"/");
	var strdt2 = eDate.replace(/-/g,"/");;
	try
	{
		var dt1=new Date(Date.parse(strdt1));
		var dt2=new Date(Date.parse(strdt2));
		if (compareCurrenFlag)
		{
			var cur = new Date();
			
			if(dt1 < cur) {
				return 2;
			}
		}
//		dt1 = dt1.getTime();
//		dt2 = dt2.getTime();
		if(dt1 > dt2) {
			return -1;
		}
		else if (dt1 < dt2)
		{
			return 1;
		}
		else
		{
			return 0;
		}
				
	}
	catch(e) {
		return 3;
	}
}

/**
 * 常用格式判断 
 * 代码片段：
 * <code>
 *  AS.pattern.isEmail('xxx@xxx.com')
 * </code>
 * 其他类推
 */
AS.pattern = {
	isEmail:function(str){
		return /^[A-Z_a-z0-9-\.]+@([A-Z_a-z0-9-]+\.)+[a-z0-9A-Z]{2,4}$/.test(str);
	},
	isPhone:function(str){
		return /^[0-9\-]+$/.test(str);
	},
	isIp:function(str){
		return /^(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])$/.test(str);
	},
	isInt:function(str){
		return /^[0-9]\d*$/.test(str);
	},
	isNum:function(str){
		return !isNaN(str);
	},
	isZip:function(str){
		return /^[1-9]\d{5}$/.test(str);
	},
	isEN:function(str){
		return /^[A-Za-z]+$/.test(str);
	},
	isPic:function(str){
		if(/.jpg$/.test(str.toLowerCase())){
			return true;
		}
		if(/.png$/.test(str.toLowerCase())){
			return true;
		}
		return false;
	}
};

	 




